/**
 * 火车票提交订单的方法
 * @author hongwei 2018-08-07
 */
// +----------------------------------------------------------------------
// | 目录
// | step:初始化方法                            _init
// | step01:初始化页面                          initPage
// | step02:获取乘客信息                        getPassengerList
// | step03:获取常用联系人列表                  getContactList
// | step04:因公获取违规原因                    judgeIsViolation
// | step05:提交订单整合参数                    submitOrderParams
// | step06:提交订单                            submitOrder
// | step07:获取证件信息，监听证件信息返回参数  getCardInfo
// | step08:选择证件信息                        selectCardInfo
// | step09:获取选中的成本中心                  getCostInfo
// | step10:获取当前成本中心的审核人信息        getApproveInfo
// | step11:获取用户的拼音首字母                firstLetter
// | step12:获取常用联系人列表                  selectContant
// | step13:获取成本中心列表                    getPolicyList
// | step14:函数:扩展                           extend

// | setStorage
// | $api.setStorage('total_price', total_price);           //总价
// | $api.setStorage('is_violation', res.is_violation);     //是否违规
// | $api.setStorage('policy_id', res.policy_id);           //政策ID

// | 选择证件信息时
// | $api.setStorage('selectCardUserId', $(obj).attr('id')); //选中人员的ID

// | $api.setStorage('getStaffUser', 0);//火车票0   机票1 ,有用吗？？？
// +----------------------------------------------------------------------
(function (window) {
    'use strict';
    let trainOrder = function (params) {
        this.extend(this.params, params);
        this._init();
    };
    trainOrder.prototype = {
        params: {
            //其他页面传过来的参数
            //1.登录设置的   login.html
            userId             : $api.getStorage('user_id'),                //用户ID
            //2.查询设置的 train_demand.html
            orderSelf          : $api.getStorage("order_self"),             //1因私2因公
            isApply            : $api.getStorage('isApply'),                //是否开启申请单
            //3.火车详情设置的 train_message.html
            trainPrice         : $api.getStorage("price"),                  //价格
            trainSeatType      : $api.getStorage('train_type'),              //座位类型
            trainSeatName      : $api.getStorage('seat_name'),              //座位
            submitOrderType    : $api.getStorage("submit_order_type"),      //获取类型,0火车1机票2酒店
            reserveType        : $api.getStorage("reserve_type"),           //来源,single因公为自己，other因公为他人
            trainInfo          : JSON.parse($api.getStorage("train_info")), //火车信息
            //4.这个参数获取路径
            //a.关闭和开启申请，因私 | 关闭申请单，因公为他人         travel_people.html
            //b.关闭申请单，因公为本人                                train_message.html
            //c.开启申请单，因公为本人                                train_demand.html
            selectedStaff      : $api.getStorage('travel_people_id_array'), //[1,2]
            //5.todo
            selectedTrain      : $api.getStorage('selected_train'),         //选择非员工
            //todo  常用出行人参数，对应139行
            //从 travel_policy_frm 传过来的
            isViolation        : $api.getStorage('is_violation'),           //是否违规，true违规，false不违规,从travel_policy传过来的
            policyId           : $api.getStorage('policy_id'),
            //差旅政策ID
            //本站将会整合的参数
            contactId          : '',    //联系人ID
            costCenterId       : '',    //成本中心ID
            tripUsersIds       : '',    //旅客人员ID
            tripUserNames       : '',   //旅客人员姓名

            //提交参数
            //submitParam        : '', //提交参数，包含以下四个部分
            tripDetails        : '', //火车信息
            tripUsers          : '', //用户信息
            tripOrder          : '', //火车订单信息
            tripPolicy         : '', //差旅政策信息
            seat               : [],//座位
            people_num         : '',//出行人数
            approve_type       : ''//审批类型
        },

        //初始化方法
        _init: function () {
            let self = this;
            if (typeof(api) === undefined) {
                console.log('该插件只能在apicloud下运行');
            } else {
                self.initPage(self.params);                 //step01:初始化页面
                self.getPassengerList(self.params);         //step02:获取乘客信息
                self.getContactList();                      //step03:获取常用联系人列表
                self.judgeIsViolation();                    //step04:因公获取是否违规
                self.paramsTripDetails(self.params);        //step05-1 参数：火车信息
                self.paramsTripPolicy(self.params);         //step05-4 参数：差旅政策
                self.getCardInfo(self.params);              //step07:获取证件信息，监听证件信息返回参数
                // self.getSeatList();                         //显示座位信息
                self.seatClickCheck();                      //选座
                //注：以下不可加入
                //self.paramsTripUsers(self.params);    //step05-2 参数：人员信息
                //self.paramTripOrder(self.params);     //step05-3:参数：订单信息
                //self.submitOrder();                   //step06:火车票提交
                //self.selectCardInfo();                //step08:选择证件信息
                //self.getCostInfo();                   //step09:获取选中的成本中心
            }
        },

        /**
         * step01:初始化页面
         * @param params
         */
        initPage: function () {
            let self = this;
            //step1:定义
            let params = self.params;
            let train_info = params.trainInfo;
            //step2：赋值
            $('.from_station').text(train_info.from_station_name); //起始站，例：北京南
            $('.start_time').text(train_info.start_time);//出行时间：例：19:34
            let start_t = train_info.train_start_date.substr(0,4)+'-'+train_info.train_start_date.substr(4,2)+'-'+train_info.train_start_date.substr(6,2);
            let star_date_str = new Date(start_t).getTime();
            $('.start_date').text(CurentPrivateTime(star_date_str));//出行日期：例：2018-08-01
            $('.train_codes').text(train_info.train_code);//车型，例：D313
            //判断是否显示选座信息
            if (train_info.train_code.substr(0,1) == 'G' || train_info.train_code.substr(0,1) == 'D' || train_info.train_code.substr(0,1) == 'C') {
              $('.checkSeat').removeClass('aui-hide');
              self.getSeatList();
            } else {
              $('.checkSeat').addClass('aui-hide');
            }
            $('.train_time').text(train_info.run_time);
            $('.to_station').text(train_info.to_station_name);//到达站，例：上海
            $('.to_time').text(train_info.arrive_time);//到达时间，例：07：41
            // let end_date_str = star_date_str + (train_info.run_time_minute * 60);
            $('.end_date').text($api.getStorage('end_date')); //到达日期，例：2018-08-01
            //step2:人数和价格
            let selectedStaff = params.selectedStaff.split(',');
            let population = selectedStaff.length; //2
            let price = params.trainPrice;
            $('.population').text(population);  //人数,例：2
            $('.p_num').text(population);
            $('.price').text('￥'+price+'/张×'+population);//票价，例：￥553/张×3
            $('.total_price').text(price * population);//订单总额，例：￥5623
        },

        /**
         * step02:获取乘客信息
         * @param params
         */
        getPassengerList() {
            let self = this;
            //step1:定义
            let params = self.params;
            let paramStaff;
            //step2:三种情况下参数
            //关闭申请单 且 因公为自己
            if (params.reserveType === 'single') {
                //请求个人差旅政策
                ajax({
                    url:Config.train.checkTrainPolicy,
                    data:{
                        seatType : params.trainSeatType, //座位类型
                        seatName : params.trainSeatName, //座位名称
                        userIds  : params.userId        //人员ID
                    }
                } ,function(ret){
                    console.log(JSON.stringify(ret));
                    let res = ret.data[0];
                    $api.setStorage('is_violation', res.is_violation);
                    $api.setStorage('policy_id', res.policy_id);
                    let tempParam = {
                        isViolation             : res.is_violation,             //是否违规
                        policyId                : res.policy_id,                //差旅政策ID
                        violationReservation    : res.violation_reservation     //是否允许预订，1允许，0不允许
                    };
                    $.extend(params, tempParam);
                });
                //乘客参数
                paramStaff = {
                    staffIds:$api.getStorage('travel_people_id_array') //add by hongwei 2018-08-02
                    //注：目前没有常用出行人
                };
            } else {
                //因公为他人 todo ， 因私
                paramStaff = {
                    //staffIds:$api.getStorage('travel_people'),  //员工ID
                    staffIds:$api.getStorage('travel_people_id_array')
                    //noStaffIds:selected_train //常用出行人
                };
            }
            //step2:ajax获取乘客信息
            ajax({
                url:Config.common.getTravelUser,
                data:paramStaff
            },function(ret){
              console.log(JSON.stringify(ret));
                if (ret.code === 1) {
                  self.params.people_num = ret.count;//出行人数
                  if (self.params.people_num == 1) {
                    self.params.approve_type = ret.data[0].approval_name;//审批类型
                  }
                    let res = ret.data;
                    ret.data.self_type = self.params.orderSelf; //增加值
                    //模板
                    let tpl = document.getElementById("user_info_tpl").innerHTML;
                    document.getElementsByClassName('passenger')[0].innerHTML = doT.template(tpl)(res);
                    self.firstLetter();  //获取用户的首字母
                    if(self.params.orderSelf != 1){
                        self.getCostInfo(); //获取成本中心
                    }
                    self.getCardInfo(); //获取证件信息
                }
            });
        },

        /**
         * step03：获取常用联系人列表
         * 另外加载：paramTripOrder
         */
        getContactList : function() {
            let self = this;
            let contactParam = [];

            ajax({
                url:Config.common.getContact,
                data:{}
            }, function(ret){
                if (ret.code === 1) {
                    let res = ret.data;
                    let contact = res[0];
                    $('.contact_char').text(makePy(contact.contact_name.substring(0,1)));
                    $('.contact_name').text(contact.contact_name);
                    $('.contact_name').attr('contact_id',contact.id);
                    $('.conatct_mobile').text(contact.contact_mobile);
                    //整合联系人ID参数
                    contactParam = {
                        'contactId' : contact.id
                    };
                    $.extend(self.params, contactParam);
                    self.paramTripOrder(self.params);

                    //监听常用联系人返回值
                    api.addEventListener({
                        name: 'contactUser'
                    }, function(ret2) {
                        //console.log('contactUser：'+JSON.stringify(ret2));
                        //返回：{"value":{"contact_id":22,"contact_name":"杨红伟电信","contact_mobile":"18903467858"}}
                        if (ret2.value.contact_id !== null && ret2.value.contact_id !== undefined) {
                            //step1:赋值
                            $('.contact_name').text(ret2.value.contact_name);
                            $('.contact_name').attr('contact_id',ret2.value.contact_id);
                            $('.conatct_mobile').text(ret2.value.contact_mobile);
                            let char = makePy(ret2.value.contact_name.substring(0, 1));
                            $('.contact_char').text(char[0]);
                            //整合联系人ID参数
                            contactParam = {
                                'contactId' : ret2.value.contact_id
                            };
                            $.extend(self.params, contactParam);

                            //step2:加载trip_order一些信息
                            self.paramTripOrder(self.params);
                        }
                    });
                } else {
                    $('.contact_name').text('暂无常用联系人,请先添加');
                    $('.conatct_mobile').text('');
                }
            });
        },
        //显示座位信息
        getSeatList: function() {
          var self = this;
          var trainType = self.params.trainSeatType;//座位类型
          var seatName = self.params.trainSeatName;//座位名
          var userCount = self.params.selectedStaff.split(',').length;//出行人数
          var data = {userCount:userCount,seatName:seatName,trainType:trainType};
          var getLeftTpl = doT.template(document.getElementById('leftSeat').innerHTML)(data),
              getRightTpl = doT.template(document.getElementById('rightSeat').innerHTML)(data);
              $('.left_seat').html(getLeftTpl);
              $('.right_seat').html(getRightTpl);
              if (userCount == 1) {
                  $('.left_seat,.right_seat').css('height','4rem').css('line-height','4rem');
                  // $('.left_seat,.right_seat').css('line-height','4rem');
              }
        },
        //选座
        seatClickCheck: function() {
          var self = this;
          var userCount = self.params.selectedStaff.split(',').length;//出行人数
          $('body').on('click','.seatList',function(){
              var type = $(this).attr('type');
              if ($(this).hasClass('selected')) {
                if (type.indexOf('A') != -1) {
                    $(this).removeClass('icon-A').addClass('icon-A1');
                } else if (type.indexOf('B') != -1) {
                    $(this).removeClass('icon-B').addClass('icon-B1');
                } else if (type.indexOf('C') != -1) {
                    $(this).removeClass('icon-C').addClass('icon-cc');
                } else if (type.indexOf('D') != -1) {
                    $(this).removeClass('icon-D').addClass('icon-D1');
                } else if (type.indexOf('F') != -1) {
                    $(this).removeClass('icon-f').addClass('icon-F');
                }

                for (var i = 0; i < self.params.seat.length; i++) {
                    if (self.params.seat[i] === type) {
                        self.params.seat.splice(i, 1);
                    }
                }
                $(this).removeClass('selected');
                $('#selectedCount').text(self.params.seat.length);
              } else {
                if (self.params.seat.length < userCount) {
                    //判断当前选择的是那个座位
                    if (type.indexOf('A') != -1) {
                        $(this).removeClass('icon-A1').addClass('icon-A');
                    } else if (type.indexOf('B') != -1) {
                        $(this).removeClass('icon-B1').addClass('icon-B');
                    } else if (type.indexOf('C') != -1) {
                        $(this).removeClass('icon-cc').addClass('icon-C');
                    } else if (type.indexOf('D') != -1) {
                        $(this).removeClass('icon-D1').addClass('icon-D');
                    } else if (type.indexOf('F') != -1) {
                        $(this).removeClass('icon-F').addClass('icon-f');
                    }

                    self.params.seat.push(type);
                    $(this).addClass('selected');
                    $('#selectedCount').text(self.params.seat.length);
                } else {
                    var cancelSeat = self.params.seat.shift();
                    $('i[type='+cancelSeat+']').removeClass('selected');
                    if (cancelSeat.indexOf('A') != -1) {
                        $('i[type='+cancelSeat+']').removeClass('icon-A').addClass('icon-A1');
                    } else if (cancelSeat.indexOf('B') != -1) {
                        $('i[type='+cancelSeat+']').removeClass('icon-B').addClass('icon-B1');
                    } else if (cancelSeat.indexOf('C') != -1) {
                        $('i[type='+cancelSeat+']').removeClass('icon-C').addClass('icon-cc');
                    } else if (cancelSeat.indexOf('D') != -1) {
                        $('i[type='+cancelSeat+']').removeClass('icon-D').addClass('icon-D1');
                    } else if (cancelSeat.indexOf('F') != -1) {
                        $('i[type='+cancelSeat+']').removeClass('icon-f').addClass('icon-F');
                    }

                    //判断当前选择的是那个座位
                    if (type.indexOf('A') != -1) {
                        $(this).removeClass('icon-A1').addClass('icon-A');
                    } else if (type.indexOf('B') != -1) {
                        $(this).removeClass('icon-B1').addClass('icon-B');
                    } else if (type.indexOf('C') != -1) {
                        $(this).removeClass('icon-cc').addClass('icon-C');
                    } else if (type.indexOf('D') != -1) {
                        $(this).removeClass('icon-D1').addClass('icon-D');
                    } else if (type.indexOf('F') != -1) {
                        $(this).removeClass('icon-F').addClass('icon-f');
                    }

                    self.params.seat.push(type);
                    $(this).addClass('selected');
                    $('#selectedCount').text(self.params.seat.length);
                }
              }
          })
        },
        /**
         * step04:因公获取违规原因列表
         */
        judgeIsViolation: function() {
            let self = this;
            //因公
            if (parseInt(self.params.orderSelf) === 2 || parseInt(self.params.orderSelf) === 3) {
                if (typeof(self.params.isViolation) !== 'undefined' && self.params.isViolation === 'true') {
                    //如果违规获取违规原因
                    ajax({
                        url:Config.train.getTrainViolation,
                        data:{}
                    },function(ret){
                        if (ret.code === 1) {
                            let res  = ret.data;
                            let html = '';
                            $.each(res,function(key,val){
                                //console.log(key);
                                //console.log(val);
                                if (key === 0) {
                                    html += '<option selected="selected" value="'+val.id+'">'+val.reason_name+'</option>';
                                } else{
                                    html += '<option value="'+val.id+'">'+val.reason_name+'</option>';
                                }
                            });
                            $('.violation').append(html);
                            $('#violation_reason').show();
                        }
                    })
                }
            }
        },

        /**
         * step05-1 参数：火车信息
         * @param params
         */
        paramsTripDetails : function(params) {
            let self = this;
            //step2-1:参数整理-车票数据,11个参数
            let train_info = params.trainInfo;
            //dist-data
            let trip_details = {
                'train_start_time'  : train_info.train_start_date,      //参数1：出发日期,,ok
                'start_time'        : train_info.start_time,            //参数2：出发时间,ok
                'run_time_minute'   : train_info.run_time_minute,       //参数3：所需时间(分钟),ok
                'from_station_name' : train_info.from_station_name,     //参数4：车站名,ok
                'to_station_name'   : train_info.to_station_name,       //参数5：到站名,ok
                'start_station_name': train_info.start_station_name,    //参数6：始发站,ok
                'end_station_name'  : train_info.end_station_name,      //参数7：终点站,ok
                'train_code'        : train_info.train_code,            //参数8：车次,ok
                'train_type'        : self.params.trainSeatType,        //参数9：车型
                'train_seat_type'   : self.params.trainSeatName,        //参数10：座位类型
                'train_ticket_price': self.params.trainPrice           //参数11：价钱,ok
            };
            //test-data
            // let trip_details = {
            //     'train_start_time'  : '20180810', //参数1：出发日期
            //     'start_time'        : '07:09',    //参数2：出发时间
            //     'run_time_minute'   : '34',       //参数3：所需时间(分钟)
            //     'from_station_name' : '太原',     //参数4：车站名
            //     'to_station_name'   : '榆次',     //参数5：到站名
            //     'start_station_name': '太原',     //参数6：始发站
            //     'end_station_name'  : '榆次',     //参数7：终点站
            //     'train_code'        : '4611',     //参数8：车次
            //     'train_type'        : '4',        //参数9：车型
            //     'train_seat_type'   : '硬座',     //参数10：座位类型
            //     'train_ticket_price': '7',        //参数11：价钱
            // };
            let submitParam = {};
            submitParam = {
                tripDetail : trip_details
            };
            $.extend(self.params, submitParam);
            //$api.setStorage('trip_details', trip_details);
        },

        /**
         * step05-2 参数：人员信息
         */
        paramsTripUsers : function() {
            let self = this;

            let trip_users          = [];  //todo
            let trip_user_names    = [];  //todo
            let trip_users_ids     = [];  //todo

            $(".user_list").each(function () {
                let obj = $(this);
                let travel_user_id              = $(this).find('.travel_user_id').text();
                let travels_id                  = $(this).find('.travels_id').text();
                let travel_user_name            = $(this).find('.user_name').text();
                let travel_user_type            = 1;
                let travel_user_idcard_id       = $(this).find('.card_type').attr('card_id');
                let travel_user_idcard_type     = $(this).find('.card_type').text();
                let travel_user_idcard_number   = $(this).find('.card_num').text();
                let travel_user_mobile          = $(this).find('.mobile').text();
                let message_confirm             = $(this).find('.card_type').attr('message_confirm');
                let cost_id                     = $(this).find('.cost_name').attr('cost_id');

                // if (travels_id === 'undefined') {
                //     travel_user_type = 1;
                // } else {
                //     travel_user_id = travels_id;
                //     travel_user_type = 0;
                // }

                //9个参数
                let users = {
                    'travel_user_id'            : travel_user_id,               //参数1：出行人id
                    'travel_user_name'          : travel_user_name,             //参数2：出行人名字
                    'travel_user_type'          : travel_user_type,             //参数3：出行人类型(员工为1)
                    'travel_user_idcard_id'     : travel_user_idcard_id,        //参数4：证件类型id
                    'travel_user_idcard_type'   : travel_user_idcard_type,      //参数5：证件类型(身份证)
                    'travel_user_idcard_number' : travel_user_idcard_number,    //参数6：证件号码
                    'travel_user_mobile'        : travel_user_mobile,           //参数7：出行人手机号
                    'ticket_type'               : 1,                            //参数8：出行人类型
                    'message_confirm'           : message_confirm,              //参数9：是否接受短信
                };
                if (parseInt(self.params.orderSelf) === 1) {
                    users['cost_center_id'] = '0';       //参数10：成本中心id(因私此参数传空)
                } else {
                    users['cost_center_id'] = cost_id;  //参数10：成本中心id(因私此参数传空)
                }

                trip_user_names.push(travel_user_name);
                trip_users_ids.push(travel_user_id);
                trip_users.push(users);
            });
            //console.log('trip_user_names:'+JSON.stringify(trip_user_names));
            //console.log('trip_users_ids:'+JSON.stringify(trip_users_ids));
            //console.log('trip_users:'+JSON.stringify(trip_users));

            let submitParam = {
                tripUsers     : trip_users,       //用户所有
                tripUsersIds  : trip_users_ids,   //用户ID，例：["2", "3"]
                tripUserNames : trip_user_names,  //用户名字，例：["杨红伟移动", "郝飞"]
            };
            $.extend(self.params, submitParam);
            self.paramTripOrder();
            //$api.setStorage('trip_users', trip_users);
        },

        /**
         * step05-3:参数：订单信息
         */
        paramTripOrder: function() {
            let self = this;

            let trip_cause = $('.trip_cauce option:selected').text();
            if (trip_cause === '其他') {
                //获取备注
                let memo1 = $('input[name=memo1]').val();
                if (memo1 === '') {
                    toast.fail({
                        title: '请说明出行原因',
                        duration: 2000,
                    });
                    //flag = true;
                }
            }

            let violation_reason = '';
            if (typeof(is_violation) !== 'undefined' && is_violation === 'true') {
                violation_reason = $('.violation_reason option:selected').text();
            }

            // dist-data
            let trip_order = {
                'trip_users'        : '',
                'trip_users_ids'    : '',
                'consignee_id'      : self.params.contactId,    //参数3：联系人id
                'trip_cause'        : trip_cause,                               //参数4：出行原因,ok
                'memo1'             : $('input[name=memo1]').val(),             //参数5：备注,ok
                'oa_number'         : parseInt($api.getStorage('isApply')) === 1 ? $api.getStorage('oa_number') : '', //参数6：申请单报销单号，三个等号
                'violation_reason'  : violation_reason,             //参数7：违规原因,ok
                'book_user_id'      : self.params.userId,          //参数8：代客下单传此参数
                'create_module'     : 'company',               //参数9：company，todo,ok
            };
            //人员姓名和ID，做的有点儿复杂了，后期再简化吧
            let selectedStaffString = self.params.selectedStaff;
            let selectedStaffNumber = selectedStaffString.split(',');
            if (selectedStaffNumber.length === self.params.tripUsersIds.length) {
                trip_order.trip_users       = self.params.tripUserNames.join(',');    //参数1：出行人姓名(多人用逗号隔开),ok
                trip_order.trip_users_ids   = self.params.tripUsersIds.join(',');      //参数2：出行人id(多人用逗号隔开),ok
            }
            // test-data
            // let trip_order = {
            //     'trip_users'        : '张三,李四',   //参数1：出行人姓名(多人用逗号隔开),ok
            //     'trip_users_ids'    : '3,4',        //参数2：出行人id(多人用逗号隔开),ok
            //     'consignee_id'      : 10,           //参数3：联系人id
            //     'trip_cause'        : '出行',       //参数4：出行原因,ok
            //     'memo1'             : '备注',       //参数5：备注,ok
            //     'oa_number'         : '123456',     //参数6：申请单报销单号
            //     'violation_reason'  : '价格高',     //参数7：违规原因,ok
            //     'book_user_id'      : 1,            //参数8：代客下单传此参数
            //     'create_module'     : 'android',    //参数9：company，todo,ok
            // };
            let submitParam = {
                tripOrder : trip_order
            };
            $.extend(self.params, submitParam);
            //$api.setStorage('trip_order', trip_order);
        },

        /**
         * step05-4 参数：差旅政策，共4个参数
         */
        paramsTripPolicy : function() {
            let self = this;

            let trip_policy;
            if (parseInt(self.params.orderSelf) === 1) { //因私
                //dist-data
                trip_policy = {
                    'is_violation'      : '',                               //参数1：是否违规(因私此参数为空)
                    'order_self'        : parseInt(self.params.orderSelf),  //参数2：因私为1因公为本人2因公为他人3
                    'policy_id'         : '',                               //参数3：差旅政策id(因私此参数为空)
                    'cost_center_id'    : '',                               //参数4：最终选择的成本中心id(因私此参数为空)
                };
                //test-data
                // trip_policy = {
                //     'is_violation'      : '',           //参数1：是否违规(因私此参数为空)
                //     'order_self'        : 1,            //参数2：因私为1因公为本人2因公为他人3
                //     'policy_id'         : '',           //参数3：差旅政策id(因私此参数为空)
                //     'cost_center_id'    : '',           //参数4：最终选择的成本中心id(因私此参数为空)
                // };

            }

            if (parseInt(self.params.orderSelf) === 2 || parseInt(self.params.orderSelf) === 3) { // 因公为他人
                //dist-data
                trip_policy = {
                    'is_violation'      : self.params.isViolation,          //参数1：是否违规(因私此参数为空)
                    'order_self'        : parseInt(self.params.orderSelf),  //参数2：因私为1因公为本人2因公为他人3
                    'policy_id'         : $api.getStorage('policy_id'),             //参数3：差旅政策id(因私此参数为空)
                    'cost_center_id'    : parseInt(self.params.costCenterId),         //参数4：最终选择的成本中心id(因私此参数为空)
                };
                //test-data
                // trip_policy = {
                //     'is_violation'      : "true",       //参数1：是否违规(因私此参数为空)
                //     'order_self'        : 3,            //参数2：因私为1因公为本人2因公为他人3
                //     'policy_id'         : 1,           //参数3：差旅政策id(因私此参数为空)
                //     'cost_center_id'    : 4,           //参数4：最终选择的成本中心id(因私此参数为空)
                // };
            }
            let submitParam = {
                tripPolicy : trip_policy
            };
            $.extend(self.params, submitParam);
            //$api.setStorage('trip_policy', trip_policy);
        },

        //step06：火车票提交
        submitOrder : function() {
            let self = this;
            let toast = new auiToast();

            //获取参数
            let trip_details    = self.params.tripDetail;
            trip_details.selected_seat = self.params.seat.toString();
            let trip_users      = self.params.tripUsers;
            let trip_order      = self.params.tripOrder;
            let trip_policy     = self.params.tripPolicy;
            let param = {
                trip_details    : trip_details, //车票详情
                trip_users      : trip_users,   //人员详情
                trip_order      : trip_order,   //订单详情
                trip_policy     : trip_policy   //差旅政策
            };
            var userCount = self.params.selectedStaff.split(',').length;
            //判断是否选座,如果选座的话必须等于出行人数
            if (self.params.seat.length > 0 && self.params.seat.length < userCount) {
                $alert('请选择与出行人数匹配的座位数量');
                return false;
            }
            if (trip_users === undefined) {
                toast.fail({
                    title:'请选择乘客！',
                    duration:2000,
                });
                return false;
            }

            //step1:条款判断
            if (!$("input[type='checkbox']").is(':checked')) {
                toast.fail({
                    title: '请先核对条款',
                    duration: 2000,
                });
                return false;
            }

            //step2:证件信息为空判断
            let flagCard = false;
            $.each(trip_users,function(i,n) {
                if( n.travel_user_idcard_number == null || n.travel_user_idcard_number === undefined || n.travel_user_idcard_number === ''){
                    toast.fail({
                        title:'请选择证件信息',
                        duration:2000,
                    });
                    flagCard = true;
                }
            });
            if (flagCard) {
                return false;
            }

            //step3:证件信息 和 成本中心为空判断
            let flagCost  = false;
            if (parseInt(self.params.orderSelf) === 2 || parseInt(self.params.orderSelf) === 3) { //因公
                //成本中心为空
                $(".user_list").each(function(){
                    //证件信息为空
                    let cost_id = $(this).find('.cost_name').attr('cost_id');
                    if( cost_id === null || cost_id === undefined || cost_id === ''){
                        toast.fail({
                            title:'请选择成本中心',
                            duration:2000,
                        });
                        flagCost = true;
                    }
                });
                if (flagCost) {
                    return false;
                }
            }

            //step4：因公为个人,违规,不允许预订 的判断
            //注：虽然在前边进行判断，这里再判断一下，这里应该可以删除
            //条件1：因公为个人
            //条件2：违规
            //条件3：不允许预订
            if (parseInt(self.params.orderSelf) === 2  && self.params.isViolation === true && parseInt(self.params.violationReservation) === 0) {
                alert('当前政策标准违规,不允许违规预定！');
                return false;
            }

            //console.log(JSON.stringify(param));
            //param.XDEBUG_SESSION_START = 'PHPSTORM'; //调试，可注释

            //提交订单
            ajax({
                url : Config.train.submitTrainOrder,
                data: param
            }, function (ret) {
                //return false;
                if (ret.code === 1) {
                    //获取要花费的总额
                    let total_price = $('.total_price').text();
                    $api.setStorage('total_price', total_price);
                    api.openWin({
                        name: 'order_success_win',
                        url: './../common/order_success_win.html',
                        slidBackEnabled:false,
                        pageParam: {
                            price: total_price
                        }
                    });
                } else {
                    alert('预定失败,请稍后再试!');
                    //openWin('train_result', './train_result_win.html');
                }
            })
        },

        //step07:选择证件信息
        selectCardInfo: function (obj) {
            let self = this;

            //选中人员的ID
            $api.setStorage('selectCardUserId', $(obj).attr('id'));

            //行为
            let u_id        = $(obj).parents('.user_list').find('.travel_user_id').text();
            let travels_id  = $(obj).parents('.user_list').find('.travels_id').text();
            let u_index     = $(obj).parents('.user_list').index();
            let u_type      = 1;
            if (travels_id !== 'undefined') {
                u_type = 0;
                u_id = travels_id;
            }
            api.openWin({
                name: 'update_passenger_frm',
                url: '../train/update_passenger_frm.html',
                pageParam: {
                    u_type      : u_type,
                    u_id        : u_id,
                    u_index     : u_index,
                    user_name   : $(obj).find('.user_name').text(),
                    user_moble  : $(obj).parents('.user_list').find('.mobile').text()
                }
            });
        },

        /**
         * step08:获取证件信息，监听证件信息返回参数
         * @param params
         */
        getCardInfo: function (params) {
            let self = this;
            api.addEventListener({
                name: 'selectCard'
            }, function (ret, err) {
                let selectCardUserId = $api.getStorage('selectCardUserId');
                //console.log('selectCard:' + JSON.stringify(ret));
                //输出 ：selectCard:{"value":{"card_id":"1","card_name":"二代身份证","card_number":"140181199212084732","issend":1}}
                $('#' + selectCardUserId).find('.card_type').text(ret.value.card_name);
                $('#' + selectCardUserId).find('.card_num').text(ret.value.card_number);
                $('#' + selectCardUserId).find('.card_type').attr('card_id', ret.value.card_id);
                $('#' + selectCardUserId).find('.card_type').attr('message_confirm', ret.value.issend);
                if (ret.value.issend === 1) {
                    $('#' + selectCardUserId).find('.send_sms').text('发送短信');
                } else {
                    $('#' + selectCardUserId).find('.send_sms').text('不发送短信');
                }
                //更新参数
                self.paramsTripUsers(params);
            });

        },

        /**
         * step09:获取选中的成本中心,todo
         */
        getCostInfo: function () {
            let self = this;
            api.addEventListener({
                name: 'selectCostEvt'
            }, function (ret, err) {
                //监听结果
                //console.log('selectCostEvt:' + JSON.stringify(ret));
                //输出 ：selectCostEvt:{"value":{"cost_user_id":1,"cost_id":30,"cost_name":"吕凯成本中心"}}

                //对成本中心进行操作
                let cost_id = $api.getStorage('cost_id');

                //todo todo

                //赋值
                $('#' + cost_id).find('.cost_name').text(ret.value.cost_name);
                $('#' + cost_id).find('.cost_name').attr('cost_id', ret.value.cost_id);

                self.paramsTripUsers(self.params);

                let cost_ids        = [];   //成本中心ID多个
                let cost_names      = [];   //成本中心名称
                let new_cost_ids;           //成本中心ID-过滤重复的
                let new_cost_names;         //成本中心名称-过滤重复的
                let cost_center_id;         //成本中心ID

                $('.cost_name').each(function () {
                    if ($(this).text() !== '请选择成本中心') {
                        cost_ids.push($(this).attr('cost_id'));
                        cost_names.push($(this).text());
                    }
                });
                new_cost_ids    = $.unique(cost_ids);
                new_cost_names  = $.unique(cost_names);

                //成本中心显示
                let html = '';
                $('#select_cost').parent().removeClass('aui-hide');
                $('#select_cost').empty();
                for (let i in new_cost_ids) {
                    html += '<div class="u_info">';
                    html += '<div class="aui-list-item-inner last_cost" style="overflow: auto;text-align: center;border-bottom: 1px solid #E0E0E0">';
                    html += '<div class="aui-list-item-label" style="width:20%;float: left;height: 2rem;line-height: 2rem;">';
                    if (i == 0) {
                        html += '<input class="aui-radio" type="radio" name="cost_id" onchange="getApproveInfo(this)" checked="checked" value="' + new_cost_ids[i] + '"></div>';
                        cost_center_id = new_cost_ids[i]; //todo

                        //整合成本中心参数
                        let costParam;
                        costParam = {
                            costCenterId    : cost_center_id
                        };
                        $.extend(self.params, costParam);
                        self.paramsTripPolicy();
                    } else {
                        html += '<input class="aui-radio" type="radio" name="cost_id" onchange="getApproveInfo(this)"  value="' + new_cost_ids[i] + '"></div>';
                    }
                    html += '<div class="aui-list-item-input" style="width:80%;float: right;height: 2rem;line-height: 2rem;">';
                    html += '<div style="float: left;">';
                    html += '<span style="font-size: 0.8rem;font-weight: bold;" class="last_cost_name">' + new_cost_names[i] + '</span>';
                    html += '</div></div>';
                    html += '<div class="hint_msg" style="text-align: left;text-indent: 2em;color: #FF0000;font-size: 0.7rem;"></div>';
                    html += '</div></div>';
                }
                $('#select_cost').append(html);
                $("input[name=cost_id]").eq(0).trigger('change', [this]);

            });
        },

        /**
         * step10:获取当前成本中心的审核人信息
         * @param obj
         */
        getApproveInfo: function (obj) {
            let self = this;

            //成本中心ID
            let cost_id = $(obj).val();

            //整合成本中心参数
            let costParam;
            costParam = {
                costCenterId    : cost_id
            };
            $.extend(self.params, costParam);

            //提示信息
            $('.hint_msg').text('');
            //成本中心审批信息
            let param = {};
            param.url   = Config.common.getApproveInfo;
            param.data = {
                cost_center_id: cost_id
            };
            param.XDEBUG_SESSION_START = 'PHPSTORM'; //调试，可注释
            ajax(param, function (ret) {
                let approve_name = [];  //审核人姓名
                let approve_id = [];    //审核人ID
                let msg;                //提示信息
                if (ret.code === 1) {
                    let res = ret.data;
                    //审核人ID和审核人姓名
                    $.each(res, function (key, val) {
                        approve_name[key] = val.user_name;
                        approve_id[key] = val.user_id;
                    });
                    $(obj).attr('approve_name', approve_name.toString());
                    $(obj).attr('approve_id', approve_id.toString());
                    //判断是否需要审批
                    //is_violation = $api.getStorage('is_violation');
                    if (self.params.isViolation === 'false') {
                        msg = '不需要审批';
                    } else {
                        if ($.inArray(parseInt(self.params.userId),approve_id) === -1) {
                            //不包含
                            msg = '需要审批' + ',审批人为' + approve_name.toString();
                        } else {
                            //包含
                            msg = '不需要审批';
                        }
                    }
                    //判断违规情况下一个人的审批情况
                    if (typeof(self.params.isViolation) !== 'undefined' && self.params.isViolation === 'true' && self.params.people_num == 1 && self.params.approve_type == '免审') {
                         msg = '不需要审批';
                    }
                    $(obj).parents('.last_cost').find('.hint_msg').text(msg);
                } else {
                    msg = ret.msg;
                    $(obj).parents('.last_cost').find('.hint_msg').text(msg);
                }
            })
        },

        /**
         * step11:获取用户的拼音首字母
         */
        firstLetter: function () {
            $('.letter').each(function () {
                let name = $(this).text();
                let letter = makePy(name);
                $(this).text(letter[0].toUpperCase());
            });
        },
        /**
         * step12:获取常用联系人列表
         */
        selectContant: function () {
            let self = this;
            $api.setStorage('getStaffUser', 0);//火车票0   机票1
            openWin('contact_list', '../common/contact_list_win.html');
        },

        /**
         * step13:获取成本中心列表
         * @param obj
         */
        getPolicyList: function (obj) {
            let self = this;

            //存储 cost_id 变量，ID+手机号
            let costId = $(obj).attr('id');
            $api.setStorage('cost_id', costId);

            let user_id = $(obj).attr('cost_user_id'); //成本中心对应的用户ID
            //打开新窗口
            openWin('cost_center', '../common/cost_center_frm.html',{
                user_id: user_id
            });
        },

        /**
         * step14:函数:扩展
         * @param a
         * @param b
         * @returns {*}
         */
        extend: function (a, b) {
            for (let key in b) {
                if (b.hasOwnProperty(key)) {
                    a[key] = b[key];
                }
            }
            return a;
        }
    };

    window.trainOrder = trainOrder;
})(window);
